package com.xixi.core.rpc.utils;

import cn.hutool.core.util.StrUtil;
import cn.hutool.setting.dialect.Props;

/**
 * @author: zxh
 * @date: 2024/8/21 16:42
 * @description: 配置工具类
 */
public class ConfigUtils {

	/**
	 * 加载配置对象
	 * @author zxh
	 * @param tClass 配置类
	 * @param prefix 配置内容前缀
	 * @return 返回读取的配置对象
	 * @param <T> 泛型
	 * @CreateDate 2024/8/21
	 * @UpdateLog 2024/8/21 - []
	 */
	public static <T> T loadConfig(Class<T> tClass, String prefix) {
		return loadConfig(tClass, prefix, "");
	}

	/**
	 * 加载配置对象，支持区分环境
	 * @author zxh
	 * @param tClass 配置类
	 * @param prefix 配置内容前缀
	 * @param environment 配置环境
	 * @return 返回读取的配置对象
	 * @param <T> 泛型
	 * @CreateDate 2024/8/21
	 * @UpdateLog 2024/8/21 - []
	 */
	public static <T> T loadConfig(Class<T> tClass, String prefix, String environment) {
		StringBuilder configFileBuilder = new StringBuilder("application");
		if (StrUtil.isNotBlank(environment)) {
			configFileBuilder.append("-").append(environment);
		}
		configFileBuilder.append(".properties");
		Props props = new Props(configFileBuilder.toString());
		return props.toBean(tClass, prefix);
	}
}
